using System.Collections;
using TMPro;
using UnityEngine;

// 生命值组件
public class Health : MonoBehaviour
{
    [SerializeField] private int maxHealth = 10; // 最大生命值
    [SerializeField] private TextMeshPro healthText; // 生命值显示文本
    private int currentHealth;   // 当前生命值

    private void Start()
    {
        currentHealth = maxHealth;
        UpdateHealthDisplay();
    }

    // 减少生命值协程
    public IEnumerator ReduceHealth(int amount)
    {
        currentHealth -= amount;
        
        // 确保生命值不低于0
        if(currentHealth < 0)
        {
            currentHealth = 0;
        }
        
        UpdateHealthDisplay();
        
        // 可以在这里添加受伤动画效果
        yield return null;
        
        // 检查是否死亡
        if(currentHealth <= 0)
        {
            yield return Die();
        }
    }

    // 更新生命值显示
    private void UpdateHealthDisplay()
    {
        if(healthText != null)
        {
            healthText.text = currentHealth.ToString();
        }
    }

    // 死亡协程
    private IEnumerator Die()
    {
        // 可以在这里添加死亡动画效果
        Debug.Log(gameObject.name + " has died!");
        
        // 等待一帧确保动画播放
        yield return null;
        
        // 销毁对象
        Destroy(gameObject);
    }

    // 增加生命值方法
    public void IncreaseHealth(int amount)
    {
        currentHealth += amount;
        
        // 确保生命值不超过最大值
        if(currentHealth > maxHealth)
        {
            currentHealth = maxHealth;
        }
        
        UpdateHealthDisplay();
    }
}